package org.onion.pattern.sample.order.exception;

import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;

import java.util.List;

@Slf4j
class BindingResultHelper {

    static String getFirstError(BindingResult exceptions) {

        try {
            // 判断异常中是否有错误信息，如果存在就使用异常中的消息，否则使用默认消息
            if (exceptions.hasErrors()) {
                List<ObjectError> errors = exceptions.getAllErrors();
                if (!errors.isEmpty()) {
                    // 这里列出了全部错误参数，按正常逻辑，只需要第一条错误即可
                    FieldError fieldError = (FieldError) errors.get(0);
                    return fieldError.getDefaultMessage();
                }
            }
        } catch (Exception exception) {
            log.warn("获取请求参数异常信息失败", exception);
        }

        return exceptions.toString();
    }

}
